/**
 * 
 */
package kr.co.insoft.auth.service.members;

import kr.co.insoft.auth.model.members.JoinFormModel;
import kr.co.insoft.framework.exceptions.ServiceException;

import org.springframework.transaction.annotation.Transactional;

/**
 * @author IN-SOFT Inc. GoodwillDD(sylee@in-soft.co.kr)
 * 
 */
public interface JoinService {
	/**
	 * 사용자 이름이 중복되는지 확인한다.
	 * 
	 * @param username
	 * @return
	 * @throws ServiceException
	 */
	public boolean isDuplicateUsername(String username) throws ServiceException;

	/**
	 * 사용자를 등록한다. 등록 후, 가입 승인 메일을 발송 등록한다.(스케줄러에 의하여 자동 발송된다)
	 * 
	 * @param joinFormModel
	 * @throws ServiceException
	 */
	@Transactional(rollbackFor=ServiceException.class)
	public void registMember(JoinFormModel joinFormModel)
			throws ServiceException;

	/**
	 * 발송된 이메일 key를 확인하고, Role을 등록하여 계정을 활성화한다.
	 * 
	 * @param confirmKey
	 * @throws ServiceException
	 */
	@Transactional(rollbackFor=ServiceException.class)
	public void accountRevitalize(String confirmKey) throws ServiceException;
}
